home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 2 / Atari Mega Archive CD - Volume 2.iso / minix / up1510b.tgz / up1510b / src / test / test13.c < prev    next >
C/C++ Source or Header  |  1990-07-23  |  832b  |  47 lines

  1. /* test 13 */
  2.  
  3. /* File: pipes.c - created by Marty Leisner */
  4. /* Leisner.Henr         1-Dec-87  8:55:04 */
  5.  
  6. /* Copyright (C) 1987 by Martin Leisner. All rights reserved. */
  7. /* Used by permission. */
  8.  
  9. #include <stdio.h>
  10.  
  11. #define BLOCK_SIZE     1000
  12. #define NUM_BLOCKS    1000
  13. char buffer[BLOCK_SIZE];
  14.  
  15. main()
  16. {
  17.   int pipefd[2];
  18.   register int i;
  19.   pipe(pipefd);
  20.  
  21.   printf("Test 13 ");
  22.   fflush(stdout);        /* have to flush for child's benefit */
  23.  
  24.   pipe(pipefd);
  25.  
  26.   switch (fork()) {
  27.       case 0:
  28.     /* Child code */
  29.     for (i = 0; i < NUM_BLOCKS; i++)
  30.         if (read(pipefd[0], buffer, BLOCK_SIZE) != BLOCK_SIZE) break;
  31.     ;
  32.     exit();
  33.     break;
  34.       case -1:
  35.     perror("fork broke");
  36.     exit();
  37.       default:
  38.     /* Parent code */
  39.     for (i = 0; i < NUM_BLOCKS; i++)
  40.         write(pipefd[1], buffer, BLOCK_SIZE);
  41.  
  42.     wait((char *) 0);
  43.     break;
  44.   }
  45.   printf("ok\n");
  46. }
  47.